export function sleep(time) {
  return new Promise(resolve => setTimeout(resolve, time));
}

// export async function loopExecution(task, loopTime, condition) {
//   if (!condition()) {
//     await sleep(loopTime);
//     await task();
//     loopExecution(task, loopTime, condition)
//   } else {
//     console.log('sss', condition())
//   }
// }

export async function loopExecution(task, loopTime, condition) {
  // 参数校验
  if (typeof task !== 'function') throw new Error('Task must be a function');
  if (typeof condition !== 'function' && typeof condition !== 'undefined') 
    throw new Error('Condition must be a function or undefined');
  
  let loops = 0;
  while (!condition()) {
    await task(); // 执行任务
    await sleep(loopTime); // 等待一段时间
    loops++;
  }
}
// export async function loopUntil(task, condition, interval = 1000) {
//   if (typeof task !== 'function') throw new Error('Task must be a function');
//   if (typeof condition !== 'function') throw new Error('Condition must be a function');

//   // 检查条件是否已经满足，避免不必要的任务执行
//   if (condition()) return;

//   const loop = async () => {
//     try {
//       // 执行任务
//       await task();

//       // 再次检查条件是否满足
//       if (!condition()) {
//         // 使用setTimeout模拟非阻塞的延时，确保下一次循环在上一次任务完成后启动
//         setTimeout(loop, interval);
//       }
//     } catch (error) {
//       console.error('Task execution failed:', error);
//       // 根据需求决定是否继续循环
//       // 如果不希望继续，可以在这里退出
//       // throw error;
//     }
//   };

//   // 启动第一个循环
//   loop();
// }

// export async function loopUntil(task, condition, interval = 1000) {
//   if (typeof task !== 'function') throw new Error('Task must be a function');
//   if (typeof condition !== 'function') throw new Error('Condition must be a function');

//   return new Promise((resolve, reject) => {
//     const intervalId = setInterval(async () => {
//       try {
//         // 如果条件已经满足，则清除定时器并退出
//         if (condition()) {
//           clearInterval(intervalId);
//           resolve();
//           return;
//         }

//         // 执行任务
//         await task();

//       } catch (error) {
//         // 处理任务中的错误
//         console.error('Task execution failed:', error);
//         // 根据需求决定是否继续循环
//         // 如果不想继续循环，可以在这里中断
//         // clearInterval(intervalId);
//         // reject(error);
//       }
//     }, interval);
//   });
// }


